import javax.swing.JTextField;
/**
 * Texteingabefeld zum Auslesen eines Zahlenwertes.
 * Da die Klasse von JTextfield abgeleitet wird, stellt sie eine 
 * einfach zu bedienende Swing-Komponente dar.
 * 
 * @author Heidrich 
 * @version 26.3.08
 */
public class JNumberField extends JTextField
{
    private int i_value;
    private double d_value;

    /**
     * Konstruktor für Objekte der Klasse JNumberField
     */
    public JNumberField()
    {
        super("0");
        d_value = 0;
    }
    
    /**
     * Konstruktor f�r Objekte der Klasse JNumberField.
     * @param start Ganzzahlwert, der als Vorgabe in das Eingabefeld
     * eingetragen wird.
     */
    public JNumberField(int start)
    {
        super(""+start);
        i_value = start;
    }
    
    public JNumberField(double start)
    {
        super(""+start);
        d_value = start;
    }
    /**
     * getNumber gibt die im Eingabefeld stehende Zahl zur�ck.
     * @param def Defaultwert, der herangezogen wird, wenn 
     * im Eingabefeld keine g�ltige Ganzzahl steht.
     *  
     * @return     Die im Eingabefeld stehende Ganzzahl. 
     * Falls das Eingabefeld keinen Ganzzahlwert darstellt, 
     * wird der Defaultwert def zur�ckgegeben.
     */
    public int getNumber(int def)
    {
        try 
        {
            i_value = Integer.parseInt(getText());
        }
        catch (Exception e)
        {
            i_value = def;
        }
        return i_value;
    }
    
    public double getNumber(double def)
    {
        try 
        {
            d_value = Integer.parseInt(getText());
        }
        catch (Exception e)
        {
            d_value = def;
        }
        return d_value;
    }
    /**
     * getNumber gibt die im Eingabefeld stehende Zahl zur�ck.
     *  
     * @return     Die im Eingabefeld stehende Ganzzahl. 
     * Falls das Eingabefeld keinen Ganzzahlwert darstellt, 
     * wird der Defaultwert 0 zur�ckgegeben.
     */
    public int getNumber_i()
    {
        return getNumber(0);
    }
    
    public double getNumber_d()
    {
        return getNumber(0);
    }
    
    /**
     * setNumber schreibt in das Eingabefeld einen neuen Vorgabewert
     * @param startwert Neuer Vorgabewert f�r das Eingabefeld.
     */
    public void setNumber(int startwert)
    {
        setText(""+startwert);
    }
    
    public void setNumber(double startwert)
    {
        setText(""+startwert);
    }
}
